package ws;
import java.util.ArrayList;

import java.util.Collection;
import java.util.Date;

import org.orm.PersistentException;
import org.orm.PersistentTransaction;

import Completar.CompletarAnotaciones;

import com.google.gson.Gson;

public class Anotacion {

        public String add(int idSub, String fecha, String anotacion,
                        int id_tipoAnotacion, String rut_anotador, String rut_alumno) {
                PersistentTransaction t;
                String resultado = "";
                // valida que los campos no vengan vacios.
                if ((anotacion == null) || (anotacion.equals("")) || (idSub == 0)
                                || (id_tipoAnotacion == 0) || (rut_anotador == null)
                                || (rut_anotador.equals("")) || (rut_alumno == null)
                                || (rut_alumno.equals(""))) {
                        resultado = "ERROR: Ingrese todos los datos (descripcion de la anotacion, id de la anotacion y rut de la persona anotadora y el id tipo de anotacion)";
                }// si los datos vienen vacios
                        // si los datos no vienen vacios.
                else {
                        try {
                                t = orm.DiagnosticoPersistentManager.instance()
                                                .getSession().beginTransaction();
                                // Instancia factory
                                orm.DAOFactory lDAOFactory = orm.DAOFactory.getDAOFactory();
                                // Instancia DAO
                                /*
                                 * Creo un objeto nuevo de anotacion
                                 */
                                orm.dao.AnotacionDAO lormAnotacionDAO = lDAOFactory
                                                .getAnotacionDAO();
                                // Instancia objeto orm (vo)
                                orm.Anotacion lormAnotacion = lormAnotacionDAO
                                                .createAnotacion();

                                /*
                                 * BUSCAR Tipo de Anotacion Falta validar si no encuentra un
                                 * objeto o si no existe asignar uno por default validar que sea
                                 * siempre un objeto y no array
                                 */
                                orm.dao.TipoDAO lormTipoDAO = lDAOFactory
                                                .getTipoDAO();
                                orm.Tipo lormTipo = lormTipoDAO
                                                .loadTipoByQuery("tianotacion_id='1' ", null);

                                lormAnotacion
                                                .setORM_Tipotianotacion(lormTipo);

                                /*
                                 * BUSCAR Alumno Falta validar si no encuentra un objeto o si no
                                 * existe asignar uno por default
                                 */
                                orm.dao.AlumnoDAO lormAlumnoDAO = lDAOFactory
                                                .getAlumnoDAO();
                                orm.Alumno lormAlumno = lormAlumnoDAO
                                                .loadAlumnoByQuery("alu_rut='" + rut_alumno + "'",
                                                                null);

                                // lormAnotacion.setTda_alumnoalum_rut(lormTda_alumno);
                                lormAnotacion.setAlumnoalu(lormAlumno);

                                /*
                                 * BUSCAR Subsector Falta validar si no encuentra un objeto o si
                                 * no existe asignar uno por default
                                 */
                                orm.dao.SubsectorDAO oRMSubsectorDAO = lDAOFactory
                                                .getSubsectorDAO();
                                orm.Subsector oRMSubsector = oRMSubsectorDAO
                                                .loadSubsectorByQuery("sub_id='" + idSub + "'",
                                                                null);
                                lormAnotacion.setSubsectorsub(oRMSubsector);

                                /*
                                 * BUSCAR Anotador Falta validar si no encuentra un objeto o si
                                 * no existe asignar uno por default
                                 */
                                orm.dao.AnotadorDAO oRMAnotadorDAO = lDAOFactory
                                                .getAnotadorDAO();
                                orm.Anotador oRMAnotador = oRMAnotadorDAO
                                                .loadAnotadorByQuery("anot_rut='" + rut_anotador
                                                                + "'", null);
                                lormAnotacion.setORM_Anotadoranot(oRMAnotador);

                                // seteo de anotacion y fecha de esta anotacion

                                lormAnotacion.setAnotacion_descripcion(anotacion);
                                lormAnotacion.setAnotacion_fecha(fecha);

                                t.commit();
                        } catch (PersistentException e1) {
                                // TODO Auto-generated catch block
                                // e.printStackTrace();
                                resultado = "<FAIL>";
                                e1.printStackTrace();
                        }
                }
                return resultado;
        }

        public static String mostrarTodos(int id_curso) {
                // int id_curso = 1;

                String json = null;
                int length2 = 0;
                // int length3=0;
                orm.DAOFactory lDAOFactory = orm.DAOFactory.getDAOFactory();

                Collection<CompletarAnotaciones> colecionPersonaSOAPVO = new ArrayList<CompletarAnotaciones>();
                orm.Anotacion[] ormAnotaciones;
                try {

                        ormAnotaciones = lDAOFactory.getAnotacionDAO().listAnotacionByQuery(
                                        "tda_cursocurso_id='" + id_curso + "'", null);
                        // Unica busqueda por defecto por codigo del curso
                        length2 = ormAnotaciones.length;

                        // finaliza la busqueda segun el id_curdo
                        int length = ormAnotaciones.length;
                        if (length == 0) {// si no se encontraron registros
                                json = "No se ha encontrado ningun registro";
                        } else {// si se encontraron registros
                                for (int i = 0; i < length; i++) {
                                        //System.out.println(ormAnotaciones[i].getAtm_nombre());
                                        CompletarAnotaciones objeto = CompletarAnotaciones.crearCompletarAnotacion(ormAnotaciones[i]);
                                        colecionPersonaSOAPVO.add(objeto);
                                }// fin guardando resultados
                                Gson gson = new Gson();
                                json = gson.toJson(colecionPersonaSOAPVO);
                        }
                } catch (PersistentException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                }
                return json;
        }
}
